var mongodb = require('./db')

function Post(username, post, time) {
	this.user = username;
	this.post = post;
	if (time) {
		this.time = time;
	}else{
		this.time = new Date();
	}

};

module.exports = Post;


Post.prototype.save = function save (callback){
	var post = {
		user:this.user,
		post:this.post,
		time:this.time,
	};
	mongodb.open(function(err,db){
		if(err){
			return callback(err);
		}
		db.collection('posts',function(err,collection){
			if(err){
				mongodb.close();
				return callback(err);
			}
			collection.ensureIndex('user');
			collection.insert(post,{safe:true},function(err,post){
				mongodb.close();
				callback(err,post);
			});
		});
	});
};

Post.get = function get(username,callback){
	mongodb.open(function(err,db){
		if(err){
			return callback(err);
		}
		db.collection('posts',function(err,collection){
			if(err){
				mongodb.close();
				return callback(err);
			}
			var query = {};
			if(username){
				query.user = username;
			}
			collection.find(query).sort({time:-1}).toArray(function(err,docs){
				mongodb.close();
				if(err){
					callback(err,null);
				}
				var posts = [];
				docs.forEach(function(doc,index){
					var post = new Post(doc.user,doc.post,doc.time);
					posts.push(post);
				});
				callback(null,posts);
			});
		});
	});
};